from docx import Document

# 假设data是一个字典，包含要替换的占位符及其对应值
data = {
    'term': "sss",  # 替换为实际数据
    'teacher_name': "sss",  # 替换为实际数据
    'course_name': "sss",  # 替换为实际数据
    'reason': "sss",  # 替换为实际数据
    'original_week': "sss",  # 替换为实际数据
    'original_class_time': "sss",  # 替换为实际数据
    'original_room': "sss",  # 替换为实际数据
    'original_class': "sss",  # 替换为实际数据
    'new_week': "s与s",  # 替换为实际数据
    'new_class_time': "sss",  # 替换为实际数据
    'new_room': "sss",  # 替换为实际数据
}

# 加载或创建一个Word文档对象
doc = Document('调课表新版.docx')


# 定义一个函数来处理文本替换
def replace_text_in_run(run, data):
    text = run.text
    print(text)
    for key, value in data.items():
        placeholder = '$' + str(key)
        text = text.replace(placeholder, value)
    run.text = text


# 遍历文档中的所有段落
for paragraph in doc.paragraphs:
    for run in paragraph.runs:
        replace_text_in_run(run, data)

# 遍历文档中的所有表格
for table in doc.tables:
    # 遍历表格中的所有行
    for row in table.rows:
        # 遍历行中的所有单元格
        for cell in row.cells:
            # 遍历单元格中的所有段落
            for paragraph in cell.paragraphs:
                # 遍历段落中的所有运行
                for run in paragraph.runs:
                    replace_text_in_run(run, data)

# 保存修改后的文档，确保使用UTF-8编码
doc.save('path_to_your_modified_document.docx')
